package cn.rslee.demo.spring.mybatis.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.rslee.demo.spring.mybatis.entity.AccessLog;
import cn.rslee.demo.spring.mybatis.entity.AccessLogCount;

/**
 * @author rslee
 * 
 * 基于mapper.xml文件实现AccessLog的CRUD
 *
 */
public interface AccessLogDao {
	
    public void save(AccessLog log);  
      
    public void delete(long id);  
      
    public void update(AccessLog log);  
      
    public AccessLog findOne(long id);  
      
    public List<AccessLog> findAll(); 
    
    //按照用户名+系统编码查询数据
    public List<AccessLog> findBy(@Param("username") String username,@Param("sysCode") String sysCode);
    
    // 分页查询数据。
    // 分页通常来说需要查询两次，一次是查询具体的记录条数，一次是查询分页限制的条数。
    // 我这边简单实现一个分页类，指定id排序，避免出现重复数据的问题
    public List<AccessLog> findByLimit(@Param("from") int from,@Param("size") int size);
    
    public long findCountBy();
    
    public List<AccessLog> findByOrder(@Param("username") String username,@Param("order") String order);
    
    //group by 汇总数据。这个对象就不是标准的实体类对象了，需要做点映射
    public List<AccessLogCount> groupBy(@Param("groupBy") String groupBy);
    
    public List<AccessLog> findByParams(@Param("sysCode") String sysCode,@Param("username") String username,@Param("visitTm") Date visitTm);
   
    public List<AccessLog> findByQueryParams(Map<String,Object> queryParams);
   

}
